//package com.zjl.legendary.web;
//
//import com.zjl.legendary.util.StrUtils;
//
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.lang.reflect.InvocationTargetException;
//import java.lang.reflect.Method;
//
///**
// * 所有servlet的基类
// * 基于反射调用子类中对应的方法
// * @author zhoujingluo
// * @date 2021/5/27 7:52
// */
//public class BaseServlet extends HttpServlet {
//    @Override
//    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        //设置字符编码
//        req.setCharacterEncoding("utf-8");
//        resp.setContentType("text/html;charset=utf-8");
//        
//        //获取请求方式
//        String requestMethod = req.getMethod();
//        //收参
//        //获取要请求的方法
//        String action = req.getParameter("action");
//        //获取规定的请求方式
//        String actionMethod = req.getParameter("method");
//        
//        //参数非空校验
//        if (StrUtils.isNotNull(action,actionMethod)){
//            //校验请求方式
//            if (requestMethod.equalsIgnoreCase(actionMethod)){
//                try {
//                    //反射获取请求执行的方法
//                    Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
//                    //反射执行调用的方法
//                    Object result = method.invoke(this, req, resp);
//
//                    //结果的非空校验
//                    if (result != null){
//                        String str = result.toString();
//                        if (str.startsWith("forward:")) {
//                            //请求转发
//                            req.getRequestDispatcher(str.split(":")[1]).forward(req,resp);
//                        } else if (str.startsWith("redirect:")) {
//                            //重定向
//                            resp.sendRedirect(req.getContextPath()+str.split(":")[1]);
//                        } else {
//                            //返回数据
//                            resp.getWriter().write(str);
//                        }
//                    }
//                } catch (NoSuchMethodException e) {
//                    e.printStackTrace();
//                } catch (IllegalAccessException e) {
//                    e.printStackTrace();
//                } catch (InvocationTargetException e) {
//                    e.printStackTrace();
//                }
//            } else {
//                //请求方式不匹配
//                resp.setStatus(406);
//            }
//        }
//    }
//}
